### 4.1.1 干什么 `stdio.h` 是 C 标准输入输出库的头文件,由 glibc 提供声明,在文件描述符操作之上封装出带用户态缓冲的文件流(`FILE*`,即由流结构指针表示的打开文件句柄),提供打开、按块读写、按行读写、格式化输出、关闭等操作。它不直接向内核递交字节,而是先把数据收进进程地址空间内的缓冲区,达到阈值或显式刷新时才向内核递交,以减少陷入次数。 它的职责边界是这样的。`unistd.h` 提供基于文件描述符(`fd`,即内核为打开文件分配的整数句柄)的裸 `read`/`write`,`stdio.h` 在其之上增加缓冲与格式化。本库不负责权限判定、路径解析与物理落盘,这些由内核 VFS(虚拟文件系统层)与文件系统驱动完成。网络套接字的读写由 `sys/socket.h` 负责,不在本库展开。 ### 4.1.2 谁在调 * PHP 的文件函数(`fopen`、`fread`、`fwrite`)底层经 libc 的 stdio 层完成落盘读写。 * Nginx 的访问日志与错误日志经 stdio 缓冲写入磁盘文件,达到缓冲阈值或显式刷新才递交内